import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

import javax.swing.BorderFactory;
import javax.swing.ComboBoxModel;
import javax.swing.DefaultComboBoxModel;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JSpinner;
import javax.swing.JTextField;
import javax.swing.SpinnerListModel;
import javax.swing.WindowConstants;

public class OptionsController extends javax.swing.JFrame implements ActionListener{

	private JPanel p;
	private JComboBox comboxAantalDeelnemers;
	private JSpinner spinnerMinInzet;
	private JPanel panelSpelers;
	private JButton buttonAnnuleren;
	private JButton buttonStart;
	private JLabel labelMaxInzet;
	private JLabel labelMinInzet;
	private JLabel labelStartbedrag;
	private JTextField tfSpelerGebdat1;
	private JTextField tfSpeler1;
	private JTextField tfSpelerGebdat2;
	private JTextField tfSpeler2;
	private JTextField tfSpelerGebdat3;
	private JTextField tfSpeler3;
	private JTextField tfSpelerGebdat4;
	private JTextField tfSpeler4;
	private JTextField tfSpelerGebdat5;
	private JTextField tfSpeler5;
	private JTextField tfSpelerGebdat6;
	private JTextField tfSpeler6;
	private JSpinner spinnerMaxInzet;
	private JLabel labelAantalDeelnemers;
	private GridLayout kolom = new GridLayout(6,2);

	/**
	* Auto-generated main method to display this JFrame
	*/
	
	public OptionsController() {
		super();
		initGUI();
	}
	
	private void initGUI() {
		try {
			setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
			getContentPane().setLayout(null);
			this.setResizable(false);
			{
				{
				}
				p = new JPanel();
				getContentPane().add(p);
				p.setBounds(0, 0, 294, 364);
				p.setLayout(null);
				{
					labelAantalDeelnemers = new JLabel();
					p.add(labelAantalDeelnemers);
					labelAantalDeelnemers.setText("Aantal Deelnemers:");
					labelAantalDeelnemers.setBounds(21, 21, 112, 21);
				}
				{
					ComboBoxModel comboxAantalDeelnemersModel = new DefaultComboBoxModel(
						new String[] { "1", "2", "3", "4", "5", "6" });
					comboxAantalDeelnemers = new JComboBox();
					p.add(comboxAantalDeelnemers);
					comboxAantalDeelnemers
						.setModel(comboxAantalDeelnemersModel);
					comboxAantalDeelnemers.setBounds(140, 21, 63, 21);
					comboxAantalDeelnemers.addActionListener(this);
				}
				{
					labelMinInzet = new JLabel();
					p.add(labelMinInzet);
					labelMinInzet.setText("Minimale inzet:");
					labelMinInzet.setBounds(21, 49, 112, 21);
				}
				{
					SpinnerListModel spinnerInzetModel = new SpinnerListModel(
						new String[] { "1", "2", "5", "10", "50",
								"100", "500" });
					spinnerMinInzet = new JSpinner();
					p.add(spinnerMinInzet);
					spinnerMinInzet.setModel(spinnerInzetModel);
					spinnerMinInzet.setBounds(140, 49, 63, 21);
				}
				{
					labelMaxInzet = new JLabel();
					p.add(labelMaxInzet);
					labelMaxInzet.setText("Maximale inzet:");
					labelMaxInzet.setBounds(21, 77, 112, 21);
				}
				{
					SpinnerListModel spinnerMaxInzetModel = new SpinnerListModel(
						new String[] { "5", "10", "20", "50", "100",
								"500", "2000" });
					spinnerMaxInzet = new JSpinner();
					p.add(spinnerMaxInzet);
					spinnerMaxInzet.setModel(spinnerMaxInzetModel);
					spinnerMaxInzet.setBounds(140, 77, 63, 21);
				}
				{
					labelStartbedrag = new JLabel();
					p.add(labelStartbedrag);
					labelStartbedrag.setText("Startbedrag:                    \u20ac500");
					labelStartbedrag.setBounds(21, 105, 182, 21);
				}
				{
					panelSpelers = new JPanel();
					p.add(panelSpelers);
					panelSpelers.setBounds(14, 126, 266, 196);
					panelSpelers.setEnabled(false);
					panelSpelers.setBorder(BorderFactory.createTitledBorder("Spelers"));
					panelSpelers.setLayout(null);
					{
						tfSpeler1 = new JTextField();
						panelSpelers.add(tfSpeler1);
						tfSpeler1.setText("Speler 1");
						tfSpeler1.setBounds(14, 21, 112, 21);
					}
					{
						tfSpelerGebdat1 = new JTextField();
						panelSpelers.add(tfSpelerGebdat1);
						tfSpelerGebdat1.setText("geboortedatum");
						tfSpelerGebdat1.setBounds(140, 21, 112, 21);
					}
					{
						tfSpeler2 = new JTextField();
						tfSpeler2.setText("Speler 2");
						tfSpeler2.setBounds(14, 46, 112, 21);
					}
					{
						tfSpelerGebdat2 = new JTextField();
						tfSpelerGebdat2.setText("geboortedatum");
						tfSpelerGebdat2.setBounds(140, 46, 112, 21);
					}
					{
						tfSpeler3 = new JTextField();
						tfSpeler3.setText("Speler 3");
						tfSpeler3.setBounds(14, 71, 112, 21);
					}
					{
						tfSpelerGebdat3 = new JTextField();
						tfSpelerGebdat3.setText("geboortedatum");
						tfSpelerGebdat3.setBounds(140, 71, 112, 21);
					}
					{
						tfSpeler4 = new JTextField();
						tfSpeler4.setText("Speler 4");
						tfSpeler4.setBounds(14, 96, 112, 21);
					}
					{
						tfSpelerGebdat4 = new JTextField();
						tfSpelerGebdat4.setText("geboortedatum");
						tfSpelerGebdat4.setBounds(140, 96, 112, 21);
					}
					{
						tfSpeler5 = new JTextField();
						tfSpeler5.setText("Speler 5");
						tfSpeler5.setBounds(14, 121, 112, 21);
					}
					{
						tfSpelerGebdat5 = new JTextField();
						tfSpelerGebdat5.setText("geboortedatum");
						tfSpelerGebdat5.setBounds(140, 121, 112, 21);
					}
					{
						tfSpeler6 = new JTextField();
						tfSpeler6.setText("Speler 6");
						tfSpeler6.setBounds(14, 146, 112, 21);
					}
					{
						tfSpelerGebdat6 = new JTextField();
						tfSpelerGebdat6.setText("geboortedatum");
						tfSpelerGebdat6.setBounds(140, 146, 112, 21);
					}
				}
				{
					buttonStart = new JButton();
					p.add(buttonStart);
					buttonStart.setText("Start spel");
					buttonStart.setBounds(70, 329, 100, 21);
					buttonStart.addActionListener(this);
				}
				{
					buttonAnnuleren = new JButton();
					p.add(buttonAnnuleren);
					buttonAnnuleren.setText("Annuleren");
					buttonAnnuleren.setBounds(180, 329, 100, 21);
					buttonAnnuleren.addActionListener(this);
				}
			}
			pack();
			setTitle("Opties");
			this.setSize(300, 400);
			setVisible(true);
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

	public void actionPerformed(ActionEvent e) {
		if (e.getSource() == comboxAantalDeelnemers){
			if (comboxAantalDeelnemers.getSelectedIndex() == 0){
				panelSpelers.removeAll();
				panelSpelers.add(tfSpeler1);
				panelSpelers.add(tfSpelerGebdat1);
				repaint();
			}else if (comboxAantalDeelnemers.getSelectedIndex() == 1){
				panelSpelers.removeAll();
				panelSpelers.add(tfSpeler1);
				panelSpelers.add(tfSpelerGebdat1);
				panelSpelers.add(tfSpeler2);
				panelSpelers.add(tfSpelerGebdat2);
				repaint();
			}else if (comboxAantalDeelnemers.getSelectedIndex() == 2){
				panelSpelers.removeAll();
				panelSpelers.add(tfSpeler1);
				panelSpelers.add(tfSpelerGebdat1);
				panelSpelers.add(tfSpeler2);
				panelSpelers.add(tfSpelerGebdat2);
				panelSpelers.add(tfSpeler3);
				panelSpelers.add(tfSpelerGebdat3);
				repaint();
			}else if (comboxAantalDeelnemers.getSelectedIndex() == 3){
				panelSpelers.removeAll();
				panelSpelers.add(tfSpeler1);
				panelSpelers.add(tfSpelerGebdat1);
				panelSpelers.add(tfSpeler2);
				panelSpelers.add(tfSpelerGebdat2);
				panelSpelers.add(tfSpeler3);
				panelSpelers.add(tfSpelerGebdat3);
				panelSpelers.add(tfSpeler4);
				panelSpelers.add(tfSpelerGebdat4);
				repaint();
			}else if (comboxAantalDeelnemers.getSelectedIndex() == 4){
				panelSpelers.removeAll();
				panelSpelers.add(tfSpeler1);
				panelSpelers.add(tfSpelerGebdat1);
				panelSpelers.add(tfSpeler2);
				panelSpelers.add(tfSpelerGebdat2);
				panelSpelers.add(tfSpeler3);
				panelSpelers.add(tfSpelerGebdat3);
				panelSpelers.add(tfSpeler4);
				panelSpelers.add(tfSpelerGebdat4);
				panelSpelers.add(tfSpeler5);
				panelSpelers.add(tfSpelerGebdat5);
				repaint();
			}else if (comboxAantalDeelnemers.getSelectedIndex() == 5){
				panelSpelers.removeAll();
				panelSpelers.add(tfSpeler1);
				panelSpelers.add(tfSpelerGebdat1);
				panelSpelers.add(tfSpeler2);
				panelSpelers.add(tfSpelerGebdat2);
				panelSpelers.add(tfSpeler3);
				panelSpelers.add(tfSpelerGebdat3);
				panelSpelers.add(tfSpeler4);
				panelSpelers.add(tfSpelerGebdat4);
				panelSpelers.add(tfSpeler5);
				panelSpelers.add(tfSpelerGebdat5);
				panelSpelers.add(tfSpeler6);
				panelSpelers.add(tfSpelerGebdat6);
				repaint();
			}
		}else if (e.getSource() == buttonAnnuleren){
			dispose();
		}else if (e.getSource() == buttonStart){
			SimpleDateFormat df = new SimpleDateFormat("dd-MM-yyyy");
			try
			{	
				
				Speler speler1 = null, speler2 = null, speler3 = null, speler4 = null, speler5 = null, speler6 = null;
				Speler[] spelers = null;
				String naam1, naam2, naam3, naam4, naam5, naam6;
				Date datum1, datum2, datum3, datum4, datum5, datum6;
				int aantalSpelers = comboxAantalDeelnemers.getSelectedIndex() + 1;
				if(aantalSpelers >= 1)
				{	naam1 = tfSpeler1.getText();
					datum1 = df.parse(tfSpelerGebdat1.getText());
					speler1 = new Speler(naam1, 500.0, datum1); 
				}
				if(aantalSpelers >= 2)
				{	naam2 = tfSpeler2.getText();
					datum2 = df.parse(tfSpelerGebdat2.getText());
					speler2 = new Speler(naam2, 500.0, datum2); 
				}
				if(aantalSpelers >= 3)
				{	naam3 = tfSpeler3.getText();
					datum3 = df.parse(tfSpelerGebdat3.getText());
					speler3 = new Speler(naam3, 500.0, datum3); 
				}
				if(aantalSpelers >= 4)
				{	naam4 = tfSpeler4.getText();
					datum4 = df.parse(tfSpelerGebdat4.getText());
					speler4 = new Speler(naam4, 500.0, datum4); 
				}
				if(aantalSpelers >= 5)
				{	naam5 = tfSpeler5.getText();
					datum5 = df.parse(tfSpelerGebdat5.getText());
					speler5 = new Speler(naam5, 500.0, datum5); 
				}
				if(aantalSpelers == 6)
				{	naam6 = tfSpeler6.getText();
					datum6 = df.parse(tfSpelerGebdat6.getText());
					speler6 = new Speler(naam6, 500.0, datum6); 
				}
				switch (aantalSpelers)
				{	case 1: spelers = new Speler[] {speler1}; break;
					case 2: spelers = new Speler[] {speler1, speler2}; break;
					case 3: spelers = new Speler[] {speler1, speler2, speler3}; break;
					case 4: spelers = new Speler[] {speler1, speler2, speler3, speler4}; break;
					case 5: spelers = new Speler[] {speler1, speler2, speler3, speler4, speler5}; break;
					case 6: spelers = new Speler[] {speler1, speler2, speler3, speler4, speler5, speler6}; break;
				}
				int maxInzet = Integer.parseInt((String)spinnerMaxInzet.getValue());
				int minInzet = Integer.parseInt((String)spinnerMinInzet.getValue());
				if (minInzet <= maxInzet){
					Spel spel = new Spel(maxInzet, minInzet, aantalSpelers, spelers);
					dispose();
					new SpelController(spel);
				}else{
					JOptionPane.showMessageDialog(this, "De mininmale inzet mag niet hoger zijn dan de maximale inzet.");
				}
				
			}
			catch (ParseException pe)
			{	JOptionPane.showMessageDialog(this, "Ongeldige datum. Voorbeeld goede datum: 31-12-1999");
			}
			catch (NumberFormatException nfe){}
		}
	}
}